package fr.univ.lr.icone.gui;

import java.util.concurrent.LinkedBlockingQueue;

import fr.univ.lr.icone.gui.event.Event;

/**
 * Interface that defines an event listener
 * 
 * @author Elian ORIOU
 * 
 */

public interface IEventListener {

	/**
	 * Receives the event into the synchronized queue to be processed
	 * 
	 * @param e
	 *            the event to transmit to the GUI
	 */

	void receiveEvent(Event e);

	/**
	 * Processes the first event in the queue
	 * 
	 * @throws Exception
	 */

	void processEvent() throws Exception;

	/**
	 * Returns the event queue
	 * 
	 * @return
	 */

	LinkedBlockingQueue<Event> getEventQueue();

}
